/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package beans;

import entidade.Cliente;
import entidade.Produto;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.Stateless;

/**
 *
 * @author lsalves
 */
@Stateless
public class CarrinhoBean implements CarrinhoBeanRemote {

    private Cliente cliente;
    private List<Produto> produtosDoCarrinho;

    public CarrinhoBean() {
    }

    @PostConstruct
    public void init() {
        System.out.println("Init");
        if (produtosDoCarrinho == null) {
            produtosDoCarrinho = new ArrayList<Produto>();
            System.out.println("NULL");
        }
    }

    @Override
    public void inserirProdutoCarrinho(String nome) {

        if (produtosDoCarrinho == null) {
            produtosDoCarrinho = new ArrayList<Produto>();
        }

        Produto prod = new Produto();
        prod.setNome(nome);

        produtosDoCarrinho.add(prod);

        for (Produto p : produtosDoCarrinho) {
            System.out.println("Inserido o Produto Nome" + p.getNome());
        }
    }

    @Override
    public void inserirProdutoCarrinho(Object objProduto) {

        if (produtosDoCarrinho == null) {
            produtosDoCarrinho = new ArrayList<Produto>();
        }

        Produto prod = (Produto) objProduto;
        produtosDoCarrinho.add(prod);

        for (Produto p : produtosDoCarrinho) {
            System.out.println("Inserido o Produto Objeto " + p.getNome());
        }
    }

    @Override
    public void removerProdutoCarrinho(String nome) {

        System.out.println("Start Remover o Produto Nome String : ");
        System.out.println("Nome : " + nome);

        for (Produto p : produtosDoCarrinho) {
            if (p.getNome().equals(nome)) {
                produtosDoCarrinho.remove(p);
                System.out.println("Removido o Produto Nome : " + p.getNome());
                break;
            } else {
                System.out.println("Não achou para poder remover : " + p.getNome());
            }
        }

    }

    @Override
    public void removerProdutoCarrinho(Object produto) {

        System.out.println("Start Remover o Produto Nome Object : ");
        System.out.println("Nome : " + ((Produto) produto).getNome());
        for (Produto p : produtosDoCarrinho) {

            if (((Produto) produto).getNome().equals(p.getNome())) {
                produtosDoCarrinho.remove(p);
                System.out.println("Removido o Produto Objeto  : " + p.getNome());
                break;
            } else {
                System.out.println("Não achou para poder remover : " + p.getNome());
            }
        }
    }

    @Override
    public void alterarQuantidadeDeProdutoNoCarrinho(Object produto, int quantidade) {
        System.out.println("Start Alterar Quantidade de Produto Carrinho : ");
        System.out.println("Nome : " + ((Produto) produto).getNome());
        for (Produto p : produtosDoCarrinho) {
            if (((Produto) produto).getNome().equals(p.getNome())) {
                //produtosDoCarrinho. remove(p);
                p.setQuantidade(quantidade);
                System.out.println("Alterado a quantidade do Produto Objeto  : " + p.getNome());
                break;
            } else {
                System.out.println("Não achou para poder alterar : " + p.getNome());
            }
        }
    }

    @Override
    public void alterarQuantidadeDeProdutoNoCarrinho(String nomeProduto, int quantidade) {
        System.out.println("Start Alterar Quantidade de Produto Nome : ");
        System.out.println("Nome : " + nomeProduto);

        for (Produto p : produtosDoCarrinho) {
            if (p.getNome().equals(nomeProduto)) {
                p.setQuantidade(quantidade);
                System.out.println("Alterado a quantidade do Produto Nome : " + p.getNome());
                break;
            } else {
                System.out.println("Não achou para poder alterar : " + p.getNome());
            }
        }
    }

    @Override
    public List<Object> listarProdutoCarrinho() {

        System.out.println("Count Total de Produtos Carrinho: " + produtosDoCarrinho.size());

        for (Produto p : produtosDoCarrinho) {
            System.out.println("Produtos Dentro do Carrinho  : Nome : " + p.getNome() + " Quantidade : " + p.getQuantidade());
        }
        System.out.println("Listar Produtos Carrinho");
        return convertListProduto(produtosDoCarrinho);
    }

    private List<Object> convertListProduto(List<Produto> listProdutos) {
        List<Object> ObjProdutos = new ArrayList<Object>();
        for (Produto produto : listProdutos) {
            ObjProdutos.add((Object) produto);
            System.out.println("Converter Produto");
        }
        return ObjProdutos;
    }

    @Override
    public void inserirCliente(Object Cliente) {
        this.cliente = (Cliente) Cliente;
    }
    
    @Override
    public Object getCliente() {
        return cliente;
    }

    @Override
    public void inserirCliente(String nomeCliente) {
        Cliente cli = new Cliente();
        cli.setNome(nomeCliente);
        this.cliente = cli;

    }
}
